//第8节完成内容填写和骨架搭建
//第9节完成移除选项和清空购物车
//第10节完成数量的加减
//第11节完成对负数的监听
var cartController = function ($scope) {

    $scope.cart = [
        {
            id: 1000,
            name: 'iphone5s',
            quantity: 3,
            price: 4300
        },
        {
            id: 3300,
            name: 'iphone5',
            quantity: 30,
            price: 3300
        },
        {
            id: 232,
            name: 'imac',
            quantity: 4,
            price: 23000
        },
        {
            id: 1400,
            name: 'ipad',
            quantity: 5,
            price: 6900
        }
    ]

    /**
     *计算总价
     */
    $scope.totalPrice = function () {
        var total = 0;
        angular.forEach($scope.cart,function (item) {
            total += item.price * item.quantity;
        });
        return total;
    }

    /**
     *计算总购买数
     */
    $scope.totalQuantity = function () {
        var total = 0;
        angular.forEach($scope.cart,function (item) {
            total += item.quantity;
        })
        return total;
    }
    
    var findIndex = function (id) {

        var index = -1;

        angular.forEach($scope.cart,function (item,key) {
            if(id == item.id){
                index = key;
                return;
            }
        })

        return index;
    }

    /**
     * 移除该产品
     */
    $scope.remove = function(id){

        var index = findIndex(id);

        //如果找到那个item，则将数据第一个元素删除
        if(index !== -1){
            $scope.cart.splice(index,1);
        }

        //ng指令(如ng-click)触发后会自动做脏检查
    }

    /**
     * 购买数量减一
     * @param id
     */
    $scope.reduce = function (id) {

        var index = findIndex(id);

        if(index !== -1){

            var item = $scope.cart[index];

            if(item.quantity > 1){
                --item.quantity;
            }else {
                var returnKey = confirm("是否从购物车内删除该产品!");
                if(returnKey){
                    $scope.cart.splice(key,1);
                }
            }
        }

    }

    /**
     * 购买数量加一
     * @param id
     */
    $scope.add = function (id) {

        var index = findIndex(id);

        if(index !== -1){

            ++$scope.cart[index].quantity;

        }
    }

    // 监听数量 如果小于 1 则让用户判断是否要删除产品
    $scope.$watch('cart',function (newValue,oldValue) {
        
        angular.forEach(newValue,function (item,key) {
            if(item.quantity<1){
                var returnKey = confirm("是否从购物车内删除该产品!");
                if(returnKey){
                    $scope.cart.splice(key,1);
                }else {
                    item.quantity=oldValue[key].quantity;
                }
            }
        })
        
    },true);
}
